//
//  ellipsis.cpp
//  learnC++
//
//  Created by apple on 2018/6/1.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#include "ellipsis.hpp"
//count is how many additional arguments we're passing
double findAverage(int count, ...)
{
    double sum = 0;
    
    va_list list;
    //第一个参数是要初始化的列表。 第二个参数是最后一个非省略号参数。
    va_start(list, count);
    
//    遍历所有的省略号参数
    for (int arg=0; arg < count; ++arg)
//        我们使用va_arg从我们的省略号中获取参数，第一个参数是我们使用的va_list，第二个参数是参数的类型
        sum += va_arg(list, int);
    
//    完成后清理va_list。
    va_end(list);
    
    return sum / count;
}

void test_ellipsis(){
    
    std::cout << findAverage(5, 1, 2, 3, 4, 5) << '\n';
    std::cout << findAverage(6, 1, 2, 3, 4, 5, 6) << '\n';
    
}

